home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 44 / Amiga Format CD44 (1999-08-26)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-10].iso / -in_the_mag- / basics / amos / maxsamosdoors.lha / trans41finished.amos / trans41finished.amosSourceCode
AMOS Source Code  |  1999-01-01  |  18KB  |  461 lines

  1. NODE=Val(Left$(Command Line$,1))
  2.  
  3. ERR= Extension_16_0006(NODE)
  4. If ERR=20 Then Goto 2010
  5.  
  6. On Error Goto 2000
  7.  
  8. Exec "c:copy c:delete ram:"
  9.  
  10. Rem                  *** baddies variables *** 
  11. B1=11 : B2=11 : B3=39 : B4=39 : Rem B1, B2 are vertical, B3 and B4 horizontal
  12. D1=1 : D2=0 : D3=1 : D4=0 : Rem baddies' movement direction
  13.  
  14. Rem                  *** baddies weapon variables ***
  15. F1=0 : F2=0 : F3=0 : F4=0 : Rem will be >0 if in use 
  16.  
  17. Rem                  *** player variables - px horizontal, py vertical 
  18. PX=38 : PY=12 : SKILL=0 : LIVES=3 : SCORE=0
  19.  
  20. Rem                  *** some minor vars esc$ is esc-seq, p$ is for display
  21. ESC$=Chr$(27)+"[" : P$=" "
  22. Dim SC$(23)
  23.  
  24. Global P$
  25. Rem Global CNT 
  26.  
  27. P$=ESC$+"2J"+ESC$+"0;0H"
  28. ERR= Extension_16_002A(P$)
  29. If ERR=20 Then Goto 2000
  30. ERR= Extension_16_00D0("doors:trans/trans.doc")
  31. If ERR=20 Then Goto 2000
  32. 40 KEY= Extension_16_0184 
  33. 41 If KEY=20 Then Goto 2000
  34. 42 If KEY=0 Then Goto 40
  35.  
  36.  
  37. 50 Rem               *** screen print routine 
  38.  
  39. F1=0 : F2=0 : F3=0 : F4=0 : B1=14 : B2=12 : B3=34 : B4=42 : PX=38 : PY=12
  40. P$=ESC$+"2J"+ESC$+"0;0H"+ESC$+"31m"
  41. ERR= Extension_16_002A(P$)
  42. If ERR=20 Then Goto 2010
  43.  
  44.  
  45. If SKILL=0 Then Restore 5000
  46. If SKILL=1 Then Restore 5100
  47. If SKILL=2 Then Restore 5200
  48. If SKILL=3 Then Restore 5300
  49. If SKILL=4 Then Restore 5400
  50. If SKILL=5 Then Restore 5500
  51. If SKILL=6 Then Restore 5600
  52.  
  53. For A=3 To 20
  54. Read SC$(A)
  55. _ANSIPOS[1,A]
  56. P$=P$+SC$(A)
  57. ERR= Extension_16_002A(P$)
  58. If ERR=20 Then Goto 2010
  59. P$=" "
  60. Next A
  61.  
  62. RCNT=0
  63. For A=3 To 20
  64. For B=1 To Len(SC$(A))
  65. If Mid$(SC$(A),B,1)="*" Then RCNT=RCNT+1
  66. Next B
  67. Next A
  68.  
  69. LIVES$=Str$(LIVES)
  70. _ANSIPOS[8,13]
  71. P$=P$+ESC$+"35mLIVES :"+ESC$+"33m"+LIVES$
  72. ERR= Extension_16_002A(P$)
  73. If ERR=20 Then Goto 2010
  74.  
  75.  
  76.  
  77.  
  78.  
  79. CNT=0
  80.  
  81. 100 Rem              *** main input / control routine  
  82.  
  83. Wait 4
  84.  
  85. KEY= Extension_16_0184 
  86. If KEY=20 Then Goto 2000
  87. If KEY=0 Then Goto 150
  88.  
  89. Rem                  *** player movement 
  90.  
  91. If KEY=$80000050 or KEY=$80000070 or KEY=$50 or KEY=$70 Then Goto 110
  92. If KEY=$8000004F or KEY=$8000006F or KEY=$4F or KEY=$6F Then Goto 120
  93. If KEY=$80000051 or KEY=$80000071 or KEY=$51 or KEY=$71 Then Goto 140
  94. If KEY=$80000041 or KEY=$80000061 or KEY=$41 or KEY=$61 Then Goto 130
  95.  
  96. Rem                  ** 'b' key will quit
  97.  
  98. If KEY=$42 or KEY=$62 or KEY=$80000042 or KEY=$80000062 Then Goto 2020
  99.  
  100. 110 Rem              *** move right
  101.  
  102. If PX=F1 and PY=B1 Then Goto 2010
  103. If PX=F2 and PY=B2 Then Goto 2010
  104. If PY=F3 and PX=B3 Then Goto 2010
  105. If PY=F4 and PX=B4 Then Goto 2010
  106. PX=PX+1
  107. If PX>(58-SKILL) Then PX=58-SKILL
  108. _ANSIPOS[PX-1,PY]
  109. P$=P$+ESC$+"31m"+Mid$(SC$(PY),PX-1,1)
  110. If Mid$(SC$(PY),PX,1)="*" Then SCORE=SCORE+1+(SKILL*2) : Mid$(SC$(PY),PX,1)=" " : CNT=CNT+1
  111. Goto 150
  112.  
  113. 120 Rem              *** move left 
  114.  
  115. If PX=F1 and PY=B1 Then Goto 2010
  116. If PX=F2 and PY=B2 Then Goto 2010
  117. If PY=F3 and PX=B3 Then Goto 2010
  118. If PY=F4 and PX=B4 Then Goto 2010
  119. PX=PX-1
  120. If PX<(22+SKILL) Then PX=22+SKILL
  121. _ANSIPOS[PX+1,PY]
  122. P$=P$+ESC$+"31m"+Mid$(SC$(PY),PX+1,1)
  123. If Mid$(SC$(PY),PX,1)="*" Then SCORE=SCORE+1+(SKILL*2) : Mid$(SC$(PY),PX,1)=" " : CNT=CNT+1
  124. Goto 150
  125.  
  126. 130 Rem              *** move down 
  127.  
  128. If PX=F1 and PY=B1 Then Goto 2010
  129. If PX=F2 and PY=B2 Then Goto 2010
  130. If PY=F3 and PX=B3 Then Goto 2010
  131. If PY=F4 and PX=B4 Then Goto 2010
  132. PY=PY+1
  133. If PY>(20-SKILL) Then PY=20-SKILL
  134. _ANSIPOS[PX,PY-1]
  135. P$=P$+ESC$+"31m"+Mid$(SC$(PY-1),PX,1)
  136. If Mid$(SC$(PY),PX,1)="*" Then SCORE=SCORE+1+(SKILL*2) : Mid$(SC$(PY),PX,1)=" " : CNT=CNT+1
  137. Goto 150
  138.  
  139. 140 Rem              *** move up 
  140.  
  141. If PX=F1 and PY=B1 Then Goto 2010
  142. If PX=F2 and PY=B2 Then Goto 2010
  143. If PY=F3 and PX=B3 Then Goto 2010
  144. If PY=F4 and PX=B4 Then Goto 2010
  145. PY=PY-1
  146. If PY<(3+SKILL) Then PY=3+SKILL
  147. _ANSIPOS[PX,PY+1]
  148. P$=P$+ESC$+"31m"+Mid$(SC$(PY+1),PX,1)
  149. If Mid$(SC$(PY),PX,1)="*" Then SCORE=SCORE+1+(SKILL*2) : Mid$(SC$(PY),PX,1)=" " : CNT=CNT+1
  150.  
  151. 150 Rem              *** set up player ansi
  152.  
  153. If CNT=RCNT and SKILL<6 Then Goto 3000
  154. If CNT=RCNT and SKILL=6 Then Goto 4000
  155. Rem If SKILL=0 and CNT=140 Then Goto 3000
  156. Rem If SKILL=1 and CNT=124 Then Goto 3000
  157. Rem If SKILL=2 and CNT=231 Then Goto 3000
  158. Rem If SKILL=3 and CNT=199 Then Goto 3000
  159. Rem If SKILL=4 and CNT=146 Then Goto 3000
  160. Rem If SKILL=5 and CNT=72 Then Goto 3000 
  161. Rem If SKILL=6 and CNT=139 Then Goto 4000
  162.  
  163. _ANSIPOS[PX,PY]
  164. P$=P$+ESC$+"37mO"
  165.  
  166.  
  167. 200 Rem              *** bullet / baddies' movement routine  
  168.  
  169. If PX=F1 and PY=B1 Then Goto 2010
  170. If PX=F2 and PY=B2 Then Goto 2010
  171. If PY=F3 and PX=B3 Then Goto 2010
  172. If PY=F4 and PX=B4 Then Goto 2010
  173.  
  174. 210 Rem              *** baddie 1 horizontal firing left to right ***
  175.  
  176. If F1=0 and B1=PY Then F1=22+SKILL
  177. If F1>(21+SKILL) Then F1=F1+1
  178. If F1=(59-SKILL) Then F1=0 : _ANSIPOS[58-SKILL,B1] : P$=P$+" "
  179. If F1>(21+SKILL) Then _ANSIPOS[F1-1,B1]
  180. If F1>(21+SKILL) Then P$=P$+ESC$+"31m"+Mid$(SC$(B1),F1-1,1)
  181. If F1>(21+SKILL) Then P$=P$+ESC$+"36m-"
  182.  
  183. 310 Rem              *** baddie 2 horizontal firing right to left ***
  184.  
  185. If F2=0 and B2=PY Then F2=59-SKILL
  186. If F2>(21+SKILL) Then F2=F2-1
  187. If F2=(21+SKILL) Then F2=0 : _ANSIPOS[22+SKILL,B2] : P$=P$+" "
  188. If F2>(21+SKILL) Then _ANSIPOS[F2+1,B2]
  189. If F2>(21+SKILL) Then P$=P$+ESC$+"31m"+Mid$(SC$(B2),F2+1,1)
  190. If F2>(21+SKILL) Then _ANSIPOS[F2,B2] : P$=P$+ESC$+"36m-"
  191.  
  192. 410 Rem              *** baddie 3 vertical firing down *** 
  193.  
  194. If F3=0 and B3=PX Then F3=2+SKILL
  195. If F3>(1+SKILL) Then F3=F3+1
  196. If F3=(22-SKILL) Then F3=0 : _ANSIPOS[B3,21-SKILL] : P$=P$+" "
  197. If F3>(1+SKILL) Then _ANSIPOS[B3,F3-1] : P$=P$+ESC$+"31m"+Mid$(SC$(F3-1),B3,1)
  198. If F3>(1+SKILL) Then _ANSIPOS[B3,F3] : P$=P$+ESC$+"36m|"
  199.  
  200. 510 Rem              *** baddie 4 vertical firing up *** 
  201.  
  202. If F4=0 and B4=PX Then F4=(21-SKILL)
  203. If F4>(1+SKILL) Then F4=F4-1
  204. If F4=(1+SKILL) Then F4=0 : _ANSIPOS[B4,2+SKILL] : P$=P$+" "
  205. If F4>(1+SKILL) Then _ANSIPOS[B4,F4+1] : P$=P$+ESC$+"31m"+Mid$(SC$(F4+1),B4,1)
  206. If F4>(1+SKILL) Then _ANSIPOS[B4,F4] : P$=P$+ESC$+"36m|"
  207.  
  208. 600 Rem              *** baddie 1's x / y movement control 
  209.  
  210. If F1>0 Then Goto 630
  211. If D1=1 Then B1=B1+1 : If B1=(21-SKILL) Then D1=0
  212. If D1=0 Then B1=B1-1 : If B1=(3+SKILL) Then D1=1
  213.  
  214. 630 Rem              *** baddie 2's x / y movement control 
  215.  
  216. If F2>0 Then Goto 650
  217. If D2=1 Then B2=B2+1 : If B2=(21-SKILL) Then D2=0 : 
  218. If D2=0 Then B2=B2-1 : If B2=(3+SKILL) Then D2=1
  219.  
  220. 650 Rem              *** baddie 3's x / y movement control 
  221.  
  222. If F3>0 Then Goto 670
  223. If D3=1 Then B3=B3+1 : If B3=(59-SKILL) Then D3=0
  224. If D3=0 Then B3=B3-1 : If B3=(22+SKILL) Then D3=1
  225.  
  226. 670 Rem              *** baddie 4's x / y movement control 
  227.  
  228. If F4>0 Then Goto 700
  229. If D4=1 Then B4=B4+1 : If B4=(59-SKILL) Then D4=0
  230. If D4=0 Then B4=B4-1 : If B4=(22+SKILL) Then D4=1
  231.  
  232. 700 Rem              *** build up baddie 1's ansi position 
  233.  
  234. P$=P$+ESC$+"32m"
  235. If F1>0 Then Goto 750
  236. If D1=0 Then _ANSIPOS[(20+SKILL),B1+1]
  237. If D1=1 Then _ANSIPOS[(20+SKILL),B1-1]
  238. P$=P$+" "
  239. _ANSIPOS[(20+SKILL),B1]
  240. P$=P$+">"
  241.  
  242. 750 Rem              *** build up baddie 2's ansi position 
  243.  
  244. If F2>0 Then Goto 800
  245. If D2=0 Then _ANSIPOS[(60-SKILL),B2+1]
  246. If D2=1 Then _ANSIPOS[(60-SKILL),B2-1]
  247. P$=P$+" "
  248. _ANSIPOS[(60-SKILL),B2]
  249. P$=P$+"<"
  250.  
  251. 800 Rem              *** build up baddie 3's ansi position 
  252.  
  253. If F3>0 Then Goto 850
  254. _ANSIPOS[B3-1,(1+SKILL)]
  255. P$=P$+" v "
  256.  
  257. 850 Rem              *** build up baddie 4's ansi position 
  258.  
  259. If F4>0 Then Goto 900
  260. _ANSIPOS[B4-1,(22-SKILL)]
  261. P$=P$+" ^ "
  262.  
  263. 900 Rem              *** send ansi information to ram: 
  264.  
  265. SCORE$=Str$(SCORE)
  266. _ANSIPOS[8,10]
  267. P$=P$+ESC$+"35mSCORE :"+ESC$+"33m"+SCORE$
  268.  
  269. Open Out 1,"ram:trans.ansi"
  270. Print #1,P$
  271. Close 
  272.  
  273. Rem                  *** print, then delete the info 
  274.  
  275. ERR= Extension_16_00D0("RAM:trans.ansi")
  276. If ERR=20 Then Goto 2010
  277. Exec "ram:delete RAM:TRANS.ANSI"
  278. P$=""
  279.  
  280. Goto 100
  281.  
  282.  
  283. 2000 ERR= Extension_16_002A("Error occured") : Rem   *** uh oh, problem ! 
  284. Exec "C:delete ram:delete"
  285.  Extension_16_0018 
  286. System 
  287.  
  288. 2010 Rem             *** collision or error detected, dead !  
  289. LIVES=LIVES-1 : If LIVES>0 Then Goto 50
  290. 2020 P$=ESC$+"2J"
  291. _ANSIPOS[30,10]
  292. P$=P$+ESC$+"37mDead, you scored "+Str$(SCORE)
  293. ERR= Extension_16_002A(P$)
  294. Wait 100
  295. Exec "C:delete ram:delete"
  296.  Extension_16_0018 
  297. System 
  298.  
  299. 3000 Wait 20 : SKILL=SKILL+1
  300. 3010 Goto 50
  301.  
  302. 4000 P$=ESC$+"2J"
  303. 4010 _ANSIPOS[10,10]
  304. 4020 P$=P$+ESC$+"37mYou are truly a Ninja, you beat the game with a score of "+Str$(SCORE)
  305. 4030 ERR= Extension_16_002A(P$)
  306. 4040 Wait 150
  307. 4050 Exec "C:delete ram:delete"
  308. 4060 Extension_16_0018 
  309. 4070 System 
  310.  
  311.  
  312.  
  313. 5000 Data "                                                          "
  314. 5001 Data "                         *        *         *        *    "
  315. 5002 Data "                      * * * *  * * * *   * * * *  * * * * "
  316. 5003 Data "                       *   *    *   *     *   *    *   *  "
  317. 5004 Data "                        * *      * *       * *      * *   "
  318. 5005 Data "                       *   *    *   *     *   *    *   *  "
  319. 5006 Data "                                                          "
  320. 5007 Data "                       * * * * * * * *   * * * * * * * *  "
  321. 5008 Data "                      *    *   *   *  * *  *   *   *    * "
  322. 5009 Data "                      *    *   *   *  * *  *   *   *    * "
  323. 5010 Data "                       * * * * * * * *   * * * * * * * *  "
  324. 5011 Data "                                                          "
  325. 5012 Data "                       *   *    *   *     *   *    *   *  "
  326. 5013 Data "                        * *      * *       * *      * *   "
  327. 5014 Data "                       *   *    *   *     *   *    *   *  "
  328. 5016 Data "                      * * * *  * * * *   * * * *  * * * * "
  329. 5017 Data "                         *        *         *       *     "
  330. 5018 Data "                                                          "
  331.  
  332. 5100 Data "                                                          "
  333. 5101 Data "                                                          "
  334. 5102 Data "                                   *O*N*L*Y*              "
  335. 5103 Data "                                                          "
  336. 5104 Data "                           *     *   * A  ****     *      "
  337. 5105 Data "                          * *    ** ** M *        * *     "
  338. 5106 Data "                         *   *   * * * I *   **  *   *    "
  339. 5107 Data "                        * * * *  *   * G *    * * * * *   "
  340. 5108 Data "                       *       * *   * A  **** *       *  "
  341. 5109 Data "                                                          "
  342. 5110 Data "                        *M*A*K*E*S* *I*T* *H*A*P*P*E*N*   "
  343. 5111 Data "                                                          "
  344. 5112 Data "                       *       * *   * *  **** *       *  "
  345. 5113 Data "                        * * * *  *   * * *    * * * * *   "
  346. 5114 Data "                         *   *   * * * * *   **  *   *    "
  347. 5115 Data "                          * *    ** ** * *        * *     "
  348. 5116 Data "                           *     *   * *  ****     *      "
  349. 5117 Data "                                                          "
  350. 5118 Data "                                                          "
  351.  
  352. 5200 Data "                                                          "
  353. 5201 Data "                                                          "
  354. 5202 Data "                       ******       *******       ******  "
  355. 5203 Data "                       ******       *******       ******  "
  356. 5204 Data "                       ******       *******       ******  "
  357. 5205 Data "                       ******       *******       ******  "
  358. 5206 Data "                             *******       *******        "
  359. 5207 Data "                             *******       *******        "
  360. 5208 Data "                             *******       *******        "
  361. 5209 Data "                       ******       *******       ******  "
  362. 5210 Data "                       ******       *******       ******  "
  363. 5211 Data "                       ******       *******       ******  "
  364. 5212 Data "                             *******       *******        "
  365. 5213 Data "                             *******       *******        "
  366. 5214 Data "                             *******       *******        "
  367. 5215 Data "                             *******       *******        "
  368. 5216 Data "                                                          "
  369. 5217 Data "                                                          "
  370. 5218 Data "                                                          "
  371.  
  372. 5300 Data "                                                          "
  373. 5301 Data "                                                          "
  374. 5302 Data "                                                          "
  375. 5303 Data "                        PaCmAn     *******                "
  376. 5304 Data "                               ****************           "
  377. 5305 Data "                             **********/_\*******         "
  378. 5306 Data "                           ************\ /*****           "
  379. 5307 Data "                          *******************             "
  380. 5308 Data "                         ******************      ***      "
  381. 5310 Data "                         ****************        ***      "
  382. 5311 Data "                         *******************              "
  383. 5312 Data "                          *********************   PiLLs   "
  384. 5313 Data "                             ********************         "
  385. 5314 Data "                               ****************           "
  386. 5315 Data "                                   *******                "
  387. 5316 Data "                                                          "
  388. 5317 Data "                                                          "
  389. 5318 Data "                                                          "
  390.  
  391. 5400 Data "                                                          "
  392. 5401 Data "                                                          "
  393. 5402 Data "                                                          "
  394. 5403 Data "                                                          "
  395. 5404 Data "                         *****   *****   *****   *****    "
  396. 5405 Data "                         */ \*   */ \*   */ \*   */ \*    "
  397. 5406 Data "                         *\ /*****\ /*****\ /*****\ /*    "
  398. 5407 Data "                         *****   *****   *****   *****    "
  399. 5408 Data "                         \* * / \ * * / \ * * / \ * */    "
  400. 5410 Data "                         /* * \ / * * \ / * * \ / * *\    "
  401. 5411 Data "                         *****   *****   *****   *****    "
  402. 5412 Data "                         */ \*****/ \*****/ \*****/ \*    "
  403. 5413 Data "                         *\ /*   *\ /*   *\ /*   *\ /*    "
  404. 5414 Data "                         *****   *****   *****   *****    "
  405. 5415 Data "                                                          "
  406. 5416 Data "                                                          "
  407. 5417 Data "                                                          "
  408. 5418 Data "                                                          "
  409.  
  410. 5500 Data "                                                          "
  411. 5501 Data "                                                          "
  412. 5502 Data "                                                          "
  413. 5503 Data "                                                          "
  414. 5504 Data "                                                          "
  415. 5505 Data "                            *     *    *    *     *       "
  416. 5506 Data "                          * X *       ***       * X *     "
  417. 5507 Data "                           * *  ***************  * *      "
  418. 5508 Data "                                   ****X****              "
  419. 5510 Data "                             * *     *****     * *        "
  420. 5511 Data "                            * X *  **** ****  * X *       "
  421. 5512 Data "                              *   ***     ***   *         "
  422. 5513 Data "                          *      *           *      *     "
  423. 5514 Data "                                                          "
  424. 5515 Data "                                                          "
  425. 5516 Data "                                                          "
  426. 5517 Data "                                                          "
  427. 5518 Data "                                                          "
  428.  
  429. 5600 Data "                                                          "
  430. 5601 Data "                                                          "
  431. 5602 Data "                                                          "
  432. 5603 Data "                                                          "
  433. 5604 Data "                                                          "
  434. 5605 Data "                                                          "
  435. 5606 Data "                           *************************      "
  436. 5607 Data "                           *************************      "
  437. 5608 Data "                           *N***N***J*****L***V***L*      "
  438. 5610 Data "                           ***I***N***A*****E***E***      "
  439. 5611 Data "                           *************************      "
  440. 5612 Data "                           *************************      "
  441. 5613 Data "                                                          "
  442. 5614 Data "                                                          "
  443. 5615 Data "                                                          "
  444. 5616 Data "                                                          "
  445. 5617 Data "                                                          "
  446. 5618 Data "                                                          "
  447.  
  448.  
  449. Procedure _ANSIPOS[X,Y]
  450. X$=Str$(X)
  451. Y$=Str$(Y)
  452. If X<10 Then X$=Right$(X$,1)
  453. If Y<10 Then Y$=Right$(Y$,1)
  454. If X>9 Then X$=Right$(X$,2)
  455. If Y>9 Then Y$=Right$(Y$,2)
  456. P$=P$+Chr$(27)+"["+Y$+";"+X$+"H"
  457. End Proc
  458.  
  459. Procedure _SHOW[FILE$]
  460.    If Exist(FILE$) Then ERR= Extension_16_00D0(FILE$)
  461. End Proc